package shira.seminar;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import lombok.Data;
import shira.person.Educative;
import shira.person.Madrich;

/**
 * A POJO of a seminar. Contains a list of camps and a list of ALL of the
 * educatives.
 * 
 * @author avian
 */
@Data
public class Seminar {

	/* --- Constructors --- */
	/**
	 * Constructs a new seminar with an empty list of educatives and madrichim.
	 * 
	 * @param camps
	 *            The seminar's camps.
	 * @param name
	 *            The seminar's name.
	 * @param startDate
	 *            The seminar's start date.
	 * @param endDate
	 *            The seminar's end date.
	 */
	public Seminar(List<Camp> camps, String name, Date startDate, Date endDate) {
		this(camps, name, startDate, endDate, new ArrayList<Educative>(),
				new ArrayList<Madrich>());
	}

	/**
	 * Constructs a new seminar with the given parameters.
	 * 
	 * @param camps
	 *            The seminar's camps.
	 * @param name
	 *            The seminar's name.
	 * @param startDate
	 *            The seminar's start date.
	 * @param endDate
	 *            The seminar's end date.
	 * @param educatives
	 *            The seminar's educatives.
	 * @param madrichim
	 *            The seminar's madrichim.
	 */
	public Seminar(List<Camp> camps, String name, Date startDate, Date endDate,
			List<Educative> educatives, List<Madrich> madrichim) {
		super();
		this.camps = camps;
		this.name = name;
		this.startDate = startDate;
		this.endDate = endDate;
		this.educatives = educatives;
		this.madrichim = madrichim;
	}

	/* --- Object Impl. --- */

	@Override
	public String toString() {
		return getName();
	}

	/* --- Data Members --- */

	/** The seminar's {@link Camp}s. */
	private List<Camp> camps;

	/** The seminar's name. */
	private String name;

	/** The seminar's start date. */
	private Date startDate;

	/** The seminar's end date. */
	private Date endDate;

	/** The seminar's {@link Educative}s. */
	private List<Educative> educatives;

	/** The seminar's {@link Madrich}im. */
	private List<Madrich> madrichim;
}
